const  express = require("express")
const app=express()
// 引入 http post 请求解析中间件
const bodyParser=require('body-parser')

// 中间件先过滤一次请求

app.all('*',(req,res,next)=>{
    res.header('Access-Control-Allow-Origin','*') //*表示可以跨域任何域名都行 也可以填域名表示只接受某个域名
    // res.setHeader('Access-Control-Allow-Headers','X-Requested-With,Content-Type')//可以支持的消息首部列表
    res.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS')//可以支持的提交方式
    res.header('Content-Type','application/json;charset=utf-8') //请求头中定义的类型
    next()
})
//用于解析表单数据 Context-Type 为application/x-www-form-urlencoded 时 返回的对象是一个键值对，
//当extended为false的时候，键值对中的值就为'String'或'Array'形式，为true的时候，则可为任何数据类型
app.use(bodyParser.urlencoded({extended:true}))
// 用于解析json  会自动选择最合适的解析方式
app.use(bodyParser.json())

// 定义一个对象数组
let animals=[
  {
    name:"cat",
    age:4,
    gender:"boy"
  },
  {
    name:"dog",
    age:5,
    gender:"girl"
  }
]

// 编写post 接口

app.post("/xhr-post",(req,res)=>{
  
  console.log(req)
  let {username,password}=req.body
  if(username=="hu"&&password=="chen"){
    res.status(200)
    animals[2]=req.body
    res.json(animals)
  }else{
    res.json({failed:404})
  }
  res.end()
})

// 监听端口启动服务

let server=app.listen(8083,()=>{
  let port = server.address().port
  console.log(`端口${port}正在监听中`)
})
